\chapter{绪论}\label{chap:introduction}{

\section{研究背景与意义}

如何提升处理器性能一直是计算机体系结构领域的重要问题之一。在处理器刚诞生之初时，计算部件与内存的速度相当，当时的研究重点更多地集中在如何设计更高效的计算部件。而随着技术的发展，从 1986 年到 2000 年，中央处理器(Central Processing Unit, CPU)速度以每年 55\% 的速度提高，而片外存储器响应时间仅提高了 10\%。这种CPU与内存之间不断扩大的速度差距被称为“内存墙”\citep{memory_wall}问题。当CPU与内存差异过大时，即使CPU内部可以快速执行指令，但是由于内存速度过慢，CPU必须花费大量时间等待内存完成数据的读写。

“内存墙”问题的产生的一个重要原因是处理器芯片与内存的通信带宽有限，也被称为“带宽墙”。由于物理结构、封装技术等多因素的限制，处理器只能以有限的引脚与内存连接，因此使其带宽成为了有限的资源。“内存墙”产生的另一重要原因是内存大小的不断增加。最开始的电脑只包含不到1MB的内存，而现代的消费级处理器已经可支持192GB的内存\citep{intel_i7_13700k}。当存储单元变大，其需要更长的时间来等待信号传过更大的内部电路。现代的计算机通常采用的是处理器与内存分离的架构，内存到处理器数据传输距离过远也是导致“内存墙”产生的重要原因。

同时，随着云计算、人工智能、大数据等领域的发展，处理器需要处理的负载明显有着上升的趋势。许多应用中的内存负载可高达数GB甚至数十GB，如SPEC测试中的mcf子项的内存足迹可达13.4GB\citep{Young_Chishti_Qureshi_2019}。在访存频繁的负载下，内存墙问题会造成更明显的性能下降。

“内存墙”问题使得重内存负载程序的性能被访存性能所主导，因此，如何提升访存效率、缓解“内存墙”问题成为了提升现代处理器性能的一个研究重要方向。

\subsection{高速缓存}

为了缓解内存墙的问题，一个重要的方法是设计高速缓存。现代处理器通常会在内部设计多级缓存的结构。缓存本质上是若干块小而快速的静态随机存取存储器（Static Random-Access Memory，SRAM），由于其设计在处理器芯片的内部，因此可以获得更大的带宽、更低的延迟，而更小的容量使得其访问速度更快。

缓存对系统的加速主要是利用了数据访问的局部性原理\citep{locality_Denning_2005}，包括时间局部性（Temporal Locality）与空间局部性（Spatial Locality）。时间局部性指的是，一段时间内，之前访问过的数据很有可能会再次访问。空间局部性指的是，当访问了一个数据后，接下来很有可能会访问周围的数据。

由于缓存自身也是一种存储单元，当其容量增大后，速度也会相应的减慢。因此现代的处理器通常使用的是多级缓存结构，最常见的是3级缓存的架构，分为一级（L1-Cache），二级（L2-Cache）与三级（L3-Cache）。同时，第三级缓存由于通常是最后一级，也被称为末级缓存（Last-Level-Cache,LLC）。L1与L2缓存通常容量较小而速度较快，用于最频繁使用的指令与数据访问，由于需要保持较低的访问延迟，其容量在过去的十年时间里并无显著变化。而L3的容量通常较大而速度较慢，可以提升重负载下的运行效率。近年来商用处理器的一个明显发展趋势就是提供更大的L3缓存以增强性能，如AMD公司专门推出了单独增大L3缓存的X3D系列处理器\citep{amd_ryzen_7_5800x3d}，通过增加L3缓存，该CPU在游戏以及一些内存足迹较大的应用中，可以获得平均15\%的性能提升。

但由于处理器片上面积有限，因此并不能无限地通过增加缓存容量从而提升性能。同时由于缓存的评价指标除了命中率外，还有延迟等指标\citep{hennessy2011computer}，因此对于缓存性能的优化还需要从内部微结构入手。

\subsection{RTL级处理器研究平台}

经过多年的技术积累，通用微处理器的内部结构已达到高度复杂化，技术如超标量、乱序执行和猜测执行等技术已经被运用于商业处理器中。对于学界，特别是研究初学者，构建基于这些处理器的研究平台已变得充满挑战。

在进行处理器微架构研究时，虽然已经有了诸如GEM5\citep{gem5_2011}、ChampSim\citep{Gober_The_Championship_Simulator_2022}、Qemu\citep{qemu_2005}等模拟器可以很方便地辅助研究者进行实验。但是软件平台难以支持周期级别的精细模拟，同时如果需要进行实际功率或者面积测量，或是计算微架构设计可达的时钟频率，那必须要依赖于RTL级的研究平台。

因此，RTL级处理器研究平台成为了学术研究和高等教育中的宝贵资产。而目前比较著名的开源RTL级处理器研究平台有伯克利大学研发的ChipYard\citep{chipyard_2020}以及中科院计算所的“香山”\citep{micro2022xiangshan}\citep{xiangshan_2022}平台。

但是目前的RTL研究平台的性能距离商用处理器仍有一定距离，并且其内部设计也缺乏一些现代处理器的先进设计特性，尤其是其缓存部分仍然采用了较为简易的实现。在性能较为落后的实验平台上难以发现现实世界中前沿的问题，同时在其上面进行创新性设计可能会被其他部分的短板所阻碍性能。因此，设计并开发一个高性能的RTL级末级缓存代码对于相关方向的研究者而言意义重大。

\subsection{新型混合内存}

随着制造技术的发展，出现了许多新型的内存，如基于3D封装技术的3D堆叠DRAM，也称高带宽内存(High Bandwidth Memory,HBM)\citep{hbm_2014}，以及新型的非易失性内存(Non-Volatile Memory, NVM)等。相较于传统的基于DRAM的内存而言，新型的内存往往有着独特的优势。例如3D堆叠DRAM由于其位置更接近处理器，拥有着更高的带宽以及更低的传输延迟。非易失性内存则往往功耗更低，存储密度更高，在容量与经济性上超过传统DRAM，且拥有掉电不丢失数据的特性。

由于新型内存的优点，许多公司已经开始在其商业产品上使用新型内存。如AMD在其显卡R9 Fury X上采用了HBM内存，Intel公司在其出品的Knight Landing\citep{Salehian_Yan_2017}处理器上使用了HBM，Nvidia公司也在其推出的H100 GPU上应用了最新的HBM3内存。而非易失性存储方面，Intel公司推出了基于3DXpoint的傲腾（Optane）内存，这类内存可以帮助数据中心以更低的成本扩展更大的内存容量。

但是新型内存也有着各自的缺点，如HBM的成本高昂，且由于封装的限制，其容量难以达到传统内存的大小，往往只能用在高端产品线上。而NVM最大的问题是其速度显著低于传统的DRAM内存，使得其无法直接作为主要内存使用。

因此，工业界与学术界均在探索如何将新型内存与传统内存组合形成新型的混合内存\citep{Knyaginin_Papaefstathiou_Stenstrom_2018}\citep{Ramos_Gorbatov_Bianchini_2011}，以期望同时获得高访问速度与大容量的优势。如Intel的傲腾\citep{yang2020exploring}内存在服务器上与传统DRAM内存组合，传统DRAM内存负责存储热数据，而傲腾内存负责存储较冷的数据。学术界上，许多学者试图将快速内存作为慢速内存的缓存使用，或者是将二者共同组成混合内存，并动态地将热数据移动到快速内存上。

在程序对内存的负载越来越大，工作集也在不断膨胀的当下，可以同时提供高速度与高容量的新型混合内存有望成为未来主要的内存发展方向。

\subsection{小结}

结合以上背景可以看出，优化“内存墙”问题对于提升处理器性能有十分重要的作用。“内存墙”问题在重负载的应用下尤为突出，而此时末级缓存起了关键性的作用，但受限于片上容量的限制，末级缓存不能单纯地通过增大容量来提升性能，还需要进行内部微结构的优化。

同时，新兴的新型混合内存也被认为是解决“内存墙”的一种方案，但是其一直存在着元数据访问开销大的问题，而末级缓存与混合内存在访存层次结构中处于相邻位置，因此将这二者融合有着巨大的性能提升潜力。

\section{问题与挑战}
\subsection{传统LLC的挑战}
在中低负载的情况下，现有的缓存层次结构能较为良好地应对，可以实现较高的缓存命中率从而使得处理器核高效运作。但是在重内存负载的场景下，较小容量的L1与L2缓存无法满足大规模数据缓存的需求\citep{Nori_Gaur_Rai_Subramoney_Wang_2018}\citep{Ferdman_Adileh_Kocberber_Volos_Alisafaee_Jevdjic_Kaynak_Popescu_Ailamaki_Falsafi_2011}\citep{Faldu_Diamond_Grot_2020}，这是因为工作集大小超过了缓存的容量，因此此时系统的性能表现与LLC的性能表现密切相关。

但是设计LLC的微结构时，面临着许多挑战。

1.不合理的缓存总线协议影响缓存性能及空间利用率

由于片上资源有限，因此LLC与CPU核之间的数据线数量并不能无限增加。不合理规划的缓存总线协议会产生冗余的数据通道，造成无谓的资源占用，使得每个数据通道的宽度被迫缩小，导致数据传输效率下降。同时，缓存总线协议规定了上下级缓存的交互逻辑，如果总线协议使得通道经常发生拥塞，硬件需要更多额外的空间来存储拥塞的数据，从而降低空间利用率。

2.包含式缓存设计浪费片上空间

在重负载下，LLC需要更大的容量以满足充分缓存数据集的需求。在包含式缓存的设计下，LLC中会包含上级缓存中的数据，造成了空间的重复使用。并且在强包含性的约束下，当LLC试图换出一个数据时，会同时命令所有的上级缓存踢出相对应的数据，使得一些在上级缓存频繁使用的数据被无谓地换出，从而影响性能。

3.重负载下频繁的请求冲突影响性能

在重负载下LLC将会收到大量的请求，请求之间发生冲突将会是常态。在冲突发生时，首要重点是保持请求处理的正确性，最简单的方法是在冲突发生时通过阻塞后续请求，将请求串行处理，但是这会导致性能损失。因此如何在请求冲突发生时，在保证正确性的情况下尽可能地高效率处理请求，是一个需要研究的问题。


\subsection{新型混合内存的挑战}
虽然优化LLC可以有效地提升系统在重负载下的性能，但是传统的LLC采用的是SRAM作为存储结构，受限于片上空间，其容量通常只有16MB或是32MB。在面临类似于图搜索问题时，CPU往往需要访问十几GB大小的数据，传统的LLC容量完全无法适应如此之大的数据集。

而新型的混合内存往往由基于DRAM的小容量高速内存与大容量的慢速内存组成，以同时获得高速内存访问与大内存空间的好处。因此为了提升重内存负载下的CPU性能，为系统引入新型的混合内存是有必要的。但是，引入混合内存会面临着诸多挑战：

1.新型混合内存会产生巨大的元数据开销

新型混合内存为了获得更高的性能，需要将频繁访问的数据动态迁移到快内存中。因此在访问混合内存时需要先读取元数据，根据元数据的信息才能知道数据是否位于快内存内。由于元数据较大，因此其通常存储于基于DRAM的快内存内，相当于访问混合内存时需要额外增加一次内存访问，使得混合内存的访问延迟增大。元数据访问开销是一直一来新型混合内存面临的最大问题。

2.片上用于加速混合内存访问的资源有限

优化混合内存的元数据访问开销可以通过优化其逻辑组织方式来进行，但是该方式并不能彻底解决元数据访问开销大的问题，往往还需要一小块高速的SRAM来对元数据访问进行加速。然而处理器的片上空间有限，额外引入的SRAM一般只能达到512KB左右的空间，无法充分满足混合内存的需要。因此如何在片上找到更多的SRAM以加速混合内存访问是一个值得探索的问题。

\section{本文主要工作与创新点}

各种应用对内存的负载不断增加使得“内存墙”问题越发明显，如何优化“内存墙”问题对提升处理器性能有十分重要的意义。本文聚焦于如何通过优化末级缓存的设计以提升重内存负载下的CPU访存性能。

本文首先设计了一个末级缓存，并优化内部微结构以提升其在重内存负载下的性能。为了进一步提升处理器在重内存负载下的性能，本文设计了一种新颖的混合末级缓存，通过复用片上LLC的空间以加速新型混合内存的访问效率。

本文的创新点如下所述：

1.本文设计了一个RTL级高性能末级缓存“320 LLC”。围绕着提升重内存负载下处理效率这一问题，在设计时开展了诸多优化。在总线协议上使用了高效率低开销的“320”总线，使得总线带宽利用率高、无需额外的写缓冲区。采用了高效的请求缓冲-调度队列，以增强MSHR（Miss-status Handling Registers）冲突时对新请求的暂存能力。实现了同组并行执行机制，增加了请求Set冲突时的处理效率。采用了非包含式缓存设计，以减少缓存层次结构中数据的重复存储问题。实验结果表明，搭载了“320 LLC”的“320 CPU”达到了商用级处理器的性能水平，为相关领域研究者提供了一个高水平的实验平台。

2.本文设计了一种新颖的混合末级缓存FuseLLC。为了解决新型混合内存的高元数据访问开销这一问题，本文创新性地提出了复用片上LLC数据存储空间的方案。本文首先提出了基于MPtrArray的混合数据管理方法，使得在高效地管理LLC中的异构数据的同时，将FuseLLC设计与LLC及混合内存物理参数解耦合。在FuseLLC的全局上使用了多点采样的动态划分调整算法，使得LLC与混合内存的性能得到平衡。在局部上使用了冲突避让算法，使得元数据可以避让LLC的热点区域，降低性能损失。同时提出了Major-Minor算法，使得元数据可以集中于LLC的冷点区域，充分复用LLC资源。实验结果表明，FuseLLC以125KB的开销达到了基线模型约3MB开销才能达到的性能，在大部分测试点上均达到了90\%的元数据命中率，有效缓解了混合内存元数据访问开销大的问题。

\section{本文组织结构}

本文一共分为五个章节。

第一章介绍了目前处理器遇到了不断增长的内存负载压力，主流的提升处理器访存性能的方式，以及这些方法遇到的问题与挑战。最后介绍了本文为了解决这些问题所展开的研究内容与对应的创新点。

第二章对本文所涉及的国内外相关工作进行介绍，包括缓存组织结构的发展，缓存划分的发展，缓存重用的发展，以及新型混合内存的发展。

第三章介绍了本文对RTL级高性能末级缓存“320 LLC”的研究工作，详细地介绍了缓存总线协议、请求缓冲-调度队列、非包含式缓存设计、同组并行设计以及一致性维护与防死锁的处理。最后对“320 LLC”的功能与性能进行测试，并与类似工作进行了性能对比。

第四章介绍了本文对于新型混合末级缓存“FuseLLC”的研究工作，介绍了混合末级缓存内混合数据的管理方法、全局动态缓存划分方法、局部争抢避让机制以及冷热区域识别算法，并通过与基线模型进行对比以分析设计的高效性。

第五章对本文的研究工作进行了总结，对今后的工作进行展望。

}